﻿// ***********************************************************************
// Assembly         : INNOVACALL.Framework.Common
// Author           : LJO+01 (Laurent Jordi)
// Created          : 06-05-2013
// Last Modified By : LJO+01 (Laurent Jordi)
// Last Modified On : 06-05-2013
// ***********************************************************************
// <copyright file="LayoutMenu_Translation_MetaModel.cs" company="Copyright © Innovacall 2011">
//     Copyright (c) Copyright © Innovacall 2011. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using INNOVACALL.Framework.Common.Models.ViewModels.MetaData.LayoutMenus;
using INNOVACALL.Framework.Common.MVCHelpers.Localization;

namespace INNOVACALL.Framework.Common.Models.ViewModels.MetaModels.LayoutMenus
{
    /// <summary>
    /// Class LayoutMenu_Translation_MetaModel
    /// </summary>
    public class LayoutMenu_Translation_MetaModel : LayoutMenu_Translation_MetaData
    {
        /// <summary>
        /// Gets or sets the index of the language.
        /// </summary>
        /// <value>The index of the language.</value>
        public int LanguageIndex { get; set; }
        /// <summary>
        /// Gets or sets the level count.
        /// </summary>
        /// <value>The level count.</value>
        public int LevelCount { get; set; }
        //AdminMode Buttons
        /// <summary>
        /// Gets or sets a value indicating whether [admin mode].
        /// </summary>
        /// <value><c>true</c> if [admin mode]; otherwise, <c>false</c>.</value>
        public bool AdminMode { get; set; }
        /// <summary>
        /// Gets or sets the layout menu translation layout menu parent.
        /// </summary>
        /// <value>The layout menu translation layout menu parent.</value>
        public Nullable<int> LayoutMenuTranslationLayoutMenuParent { get; set; }
        /// <summary>
        /// Gets or sets the index of the sort.
        /// </summary>
        /// <value>The index of the sort.</value>
        public int SortIndex { get; set; }
        /// <summary>
        /// Controller called when menu clicked
        /// </summary>
        /// <value>The controller.</value>
        public string Controller { get; set; }
        /// <summary>
        /// Action called when menu clicked
        /// </summary>
        /// <value>The default action.</value>
        public string DefaultAction { get; set; }
        /// <summary>
        /// Gets or sets the sub menus.
        /// </summary>
        /// <value>The sub menus.</value>
        public LayoutMenuElements_MetaModel SubMenus { get; set; }
        //
        /// <summary>
        /// Gets or sets the original direct URL.
        /// </summary>
        /// <value>The original direct URL.</value>
        public string OriginalDirectURL { get; set; }
        /// <summary>
        /// Gets or sets the page title.
        /// </summary>
        /// <value>The page title.</value>
        [DisplayNameLocalized(typeof(INNOVACALL.Framework.Common.Properties.Resources), "View_LayoutMenu_Translation_PageTitle")]
        [Required(ErrorMessageResourceName = "ErrMsgRequired", ErrorMessageResourceType = typeof(INNOVACALL.Framework.Common.Properties.Resources))]
        public string PageTitle { get; set; }
        /// <summary>
        /// Gets or sets the language.
        /// </summary>
        /// <value>The language.</value>
        [DisplayNameLocalized(typeof(INNOVACALL.Framework.Common.Properties.Resources), "View_LayoutMenu_Translation_Language")]
        public Language_MetaModel Language { get; set; }
        /// <summary>
        /// Gets or sets the ancestors.
        /// </summary>
        /// <value>The ancestors.</value>
        [DisplayNameLocalized(typeof(INNOVACALL.Framework.Common.Properties.Resources), "View_LayoutMenu_Translation_Ancestors")]
        public string Ancestors { get; set; }
        /// <summary>
        /// Gets or sets the page name URL formatted.
        /// </summary>
        /// <value>The page name URL formatted.</value>
        [DisplayNameLocalized(typeof(INNOVACALL.Framework.Common.Properties.Resources), "View_LayoutMenu_Translation_PageNameURLFormatted")]
        [Required(ErrorMessageResourceName = "ErrMsgRequired", ErrorMessageResourceType = typeof(INNOVACALL.Framework.Common.Properties.Resources))]
        public string PageNameURLFormatted { get; set; }
        /// <summary>
        /// Gets or sets the direct URL.
        /// </summary>
        /// <value>The direct URL.</value>
        [DisplayNameLocalized(typeof(INNOVACALL.Framework.Common.Properties.Resources), "View_LayoutMenu_Translation_DirectURL")]
        public string DirectURL { get; set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="LayoutMenu_Translation_MetaModel"/> class.
        /// </summary>
        public LayoutMenu_Translation_MetaModel()
            : base()
        {
            this.LayoutMenuTranslationLayoutMenuParent = null;
            this.AdminMode = false;
            this.Language = null;
            this.LanguageIndex = -1;
            this.LevelCount = -1;
            this.PageTitle = "#NotInitialized#";
            this.Ancestors = "#NotInitialized#";
            this.PageNameURLFormatted = "#NotInitialized#";
            this.OriginalDirectURL = "#NotInitialized#";
            this.DirectURL = "#NotInitialized#";
            this.SubMenus = new LayoutMenuElements_MetaModel();
        }
    }
}
